package org.taskexecution.taskexecution.infrastructure.po.socialsecurity;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @author Lydond
 * @description: 参保账单明细 社保局账单
 * @create_date: 2025/6/30-下午4:45
 */

@Data
@TableName(value = "cephr_t_personal_social_info")
@ExcelIgnoreUnannotated
@ApiModel(description = "参保账单明细")
public class PersonalSocialInfo {
    @TableId(value = "id", type = IdType.AUTO)
    @ExcelIgnore
    private Long id; // 主键ID

    @TableField(value = "pid")
    @ExcelIgnore
    private String pid; // 合并记录标识

    @TableField(exist = false)
    @ExcelProperty(value = "单位名称")
    private String customerName; // 用工单位名称

    @TableField(value = "customer_id")
    @ExcelIgnore
    private String customerId; // 用工单位标识

    @TableField(value = "staff_id")
    @ExcelIgnore
    private String staffId; // 员工标识

    @TableField(value = "social_time")
    @ExcelIgnore
    private String socialTime; // 结算期

    @TableField(value = "company_account")
    @ExcelProperty(value = "缴纳账户")
    private String companyAccount; // 参缴账户

    @TableField(value = "staff_type")
    @ExcelIgnore
    private String staffType; // 0-系统已录入 1-系统未录入

    @TableField(value = "c0")
    @ExcelIgnore
    private String c0; // 序号

    @ExcelIgnore
    @TableField(value = "c1")
    private String c1; // 人员编号

    @ExcelProperty(value = "证件号码")
    @TableField(value = "c2")
    private String c2; // 证件号码

    @ExcelProperty(value = "姓名")
    @TableField(value = "c3")
    private String c3; // 姓名

    @ExcelProperty(value = "结算期")
    @TableField(value = "c4")
    private String c4; // 结算期

    @ExcelProperty(value = "费用所属月")
    @TableField(value = "c5")
    private String c5; // 对应费用所属月

    @ExcelProperty(value = "类别")
    @TableField(value = "c6")
    private String c6; // 类别

    @ExcelProperty(value = "养老缴费基数")
    @TableField(value = "c7")
    private String c7; // 养老缴费基数

    @ExcelProperty(value = "工伤缴费基数")
    @TableField(value = "c8")
    private String c8; // 工伤缴费基数

    @ExcelProperty(value = "失业缴费基数")
    @TableField(value = "c9")
    private String c9; // 失业缴费基数

    @ExcelProperty(value = "医疗缴费基数")
    @TableField(value = "c10")
    private String c10; // 医疗缴费基数

    @ExcelProperty(value = "生育缴费基数")
    @TableField(value = "c11")
    private String c11; // 生育缴费基数

    @ExcelProperty(value = " 养老（单位）费率")
    @TableField(value = "c12")
    private String c12; // 养老（单位）费率

    @ExcelProperty(value = "养老（单位）")
    @TableField(value = "c13")
    private BigDecimal c13; // 养老（单位）

    @ExcelProperty(value = "养老（个人）费率")
    @TableField(value = "c14")
    private String c14; // 养老（个人）费率

    @ExcelProperty(value = "养老（个人）")
    @TableField(value = "c15")
    private BigDecimal c15; // 养老（个人）

    @ExcelProperty(value = "工伤（单位）费率")
    @TableField(value = "c16")
    private String c16; // 工伤（单位）费率

    @ExcelProperty(value = "工伤（单位）")
    @TableField(value = "c17")
    private BigDecimal c17; // 工伤（单位）

    @ExcelProperty(value = "工伤（个人）费率")
    @TableField(value = "c18")
    private String c18; // 工伤（个人）费率

    @ExcelProperty(value = "工伤（个人）")
    @TableField(value = "c19")
    private BigDecimal c19; // 工伤（个人）

    @ExcelProperty(value = "失业（单位）费率")
    @TableField(value = "c20")
    private String c20; // 失业（单位）费率

    @ExcelProperty(value = "失业（单位）")
    @TableField(value = "c21")
    private BigDecimal c21; // 失业（单位）

    @ExcelProperty(value = "失业（个人）费率")
    @TableField(value = "c22")
    private String c22; // 失业（个人）费率

    @ExcelProperty(value = "失业（个人）")
    @TableField(value = "c23")
    private BigDecimal c23; // 失业（个人）

    @ExcelProperty(value = "生育（单位）费率")
    @TableField(value = "c24")
    private String c24; // 生育（单位）费率

    @ExcelProperty(value = "生育（单位）")
    @TableField(value = "c25")
    private BigDecimal c25; // 生育（单位）

    @ExcelProperty(value = "生育（个人）费率")
    @TableField(value = "c26")
    private String c26; // 生育（个人）费率

    @ExcelProperty(value = "生育（个人）")
    @TableField(value = "c27")
    private BigDecimal c27; // 生育（个人）

    @ExcelProperty(value = "医疗（单位）费率")
    @TableField(value = "c28")
    private String c28; // 医疗（单位）费率

    @ExcelProperty(value = "医疗（单位）")
    @TableField(value = "c29")
    private BigDecimal c29; // 医疗（单位）

    @ExcelProperty(value = "医疗（个人）费率")
    @TableField(value = "c30")
    private String c30; // 医疗（个人）费率

    @ExcelProperty(value = "医疗（个人")
    @TableField(value = "c31")
    private BigDecimal c31; // 医疗（个人）

    @ExcelProperty(value = "大额医疗（单位）费率")
    @TableField(value = "c32")
    private BigDecimal c32; // 大额医疗（单位）费率

    @ExcelProperty(value = "大额医疗（单位）")
    @TableField(value = "c33")
    private BigDecimal c33; // 大额医疗（单位）

    @ExcelProperty(value = "大额医疗（个人）费率")
    @TableField(value = "c34")
    private String c34; // 大额医疗（个人）费率

    @ExcelProperty(value = "大额医疗（个人）")
    @TableField(value = "c35")
    private BigDecimal c35; // 大额医疗（个人）

    @ExcelProperty(value = "缴费汇总")
    @TableField(value = "c36")
    private BigDecimal c36; // 缴费汇总

    @TableField(value = "c37")
    @ExcelIgnore
    private String c37; // 单位

    @ExcelProperty(value = "用工形式")
    @TableField(value = "c38")
    private String c38; // 用工形式

    @ExcelProperty(value = "失业滞纳金个人")
    @TableField(value = "c39")
    private BigDecimal c39; // 失业滞纳金个人

    @ExcelProperty(value = "失业滞纳金企业")
    @TableField(value = "c40")
    private BigDecimal c40; // 失业滞纳金企业

    @ExcelProperty(value = "养老滞纳金个人")
    @TableField(value = "c41")
    private BigDecimal c41; // 养老滞纳金个人

    @ExcelProperty(value = "养老滞纳金企业")
    @TableField(value = "c42")
    private BigDecimal c42; // 养老滞纳金企业

    @ExcelProperty(value = "医疗滞纳金个人")
    @TableField(value = "c43")
    private BigDecimal c43; // 医疗滞纳金个人

    @ExcelProperty(value = "医疗滞纳金企业")
    @TableField(value = "c44")
    private BigDecimal c44; // 医疗滞纳金企业

    @ExcelProperty(value = "生育滞纳金个人")
    @TableField(value = "c45")
    private BigDecimal c45; // 生育滞纳金个人

    @ExcelProperty(value = "生育滞纳金企业")
    @TableField(value = "c46")
    private BigDecimal c46; // 生育滞纳金企业

    @ExcelProperty(value = "工伤滞纳金个人")
    @TableField(value = "c47")
    private BigDecimal c47; // 工伤滞纳金个人

    @TableField(value = "c48")
    @ExcelProperty(value = "工伤滞纳金企业")
    private BigDecimal c48; // 工伤滞纳金企业

    @TableField(value = "c49")
    @ExcelProperty(value = "残保金")
    private BigDecimal c49; // 残保金

    @TableField(value = "c50")
    @ExcelProperty(value = "生活垃圾处理费")
    private BigDecimal c50; // 生活垃圾处理费

    @ExcelIgnore
    @TableField(value = "update_by")
    private String updateBy; // 创建人或更新人

    @ExcelProperty(value = "创建人")
    @TableField(exist = false)
    private String updateName;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @ExcelIgnore
    private LocalDateTime createTime; // 创建时间

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    @ExcelIgnore
    private LocalDateTime updateTime; // 更新时间

    @TableField(value = "pay_account_id")
    @ExcelIgnore
    private Long payAccountId;

    @TableField(value = "status")
    @ExcelIgnore
    private String status; // 同步状态 0-未同步 1-已同步

    @TableField(exist = false)
    @ExcelIgnore
    private String errorMsg; // 错误信息
}